package com.autumn.config.api.dto.input;

import com.autumn.util.ExceptionUtils;
import com.autumn.util.StringUtils;
import com.autumn.validation.constraints.NotNullOrBlank;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 应用配置输入
 * 
 * @author 老码农
 *         <p>
 *         Description
 *         </p>
 * @date 2018-01-21 23:50:40
 */
public class ApplicationProfileInput extends ConfigureInput {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3963896951457986436L;

	@NotNull(message = "应用 id 不能为空")
	private Long appId;
	@NotNullOrBlank(message = "配置名称不能为空。")
	@Size(max = 50, min = 1, message = "配置名称太长，长度不能超过50。")
	private String name;
	@NotNullOrBlank(message = "配置标签(分支)不能为空。")
	@Size(max = 50, min = 1, message = "配置标签(分支)太长，长度不能超过50。")
	private String label;
	@NotNullOrBlank(message = "配置内容不能为空。")
	private String content;
	@NotNullOrBlank(message = "配置格式不能为空。")
	private String profileFormat;
	private boolean isDefault;
	
	private Long id;

	/**
	 * 获取Id
	 * 
	 * @return
	 */
	public Long getId() {
		return id;
	}

	/**
	 * 设置id
	 * 
	 * @param id
	 */
	public void setId(Long id) {
		this.id = id;
	}

	public Long getAppId() {
		return appId;
	}

	public void setAppId(Long appId) {
		this.appId = appId;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getLabel() {
		return label;
	}

	public void setLabel(String label) {
		this.label = label;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
	
	/**
	 * 配置格式
	 * 
	 * @return
	 *
	 */
	public String getProfileFormat() {
		return profileFormat;
	}

	/**
	 * 配置格式
	 * 
	 * @param profileFormat
	 *
	 */
	public void setProfileFormat(String profileFormat) {
		this.profileFormat = profileFormat;
	}
	
	public boolean getIsDefault() {
		return isDefault;
	}

	public void setIsDefault(boolean isDefault) {
		this.isDefault = isDefault;
	}

	/**
	 * 检查
	 */
	public void check(){
		if (this.getAppId() == null) {
			ExceptionUtils.throwValidationException("应用 id 不能为空。");
		}
		if (StringUtils.isNullOrBlank(this.getName())) {
			ExceptionUtils.throwValidationException("配置名称不能为空。");
		}
		if (StringUtils.isNullOrBlank(this.getLabel())) {
			ExceptionUtils.throwValidationException("配置标签不能为空。");
		}
		if (StringUtils.isNullOrBlank(this.getContent())) {
			ExceptionUtils.throwValidationException("配置内容不能为空。");
		}
		if (StringUtils.isNullOrBlank(this.getProfileFormat())) {
			ExceptionUtils.throwValidationException("配置格式不能为空。");
		}
	}
}
